package helper;

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

public class IOFile {
	public String readFile(String filename) {
		String content = "";
		try {
			// tạo luồng nối đến tập tin
			FileInputStream is = new FileInputStream(filename);
			// Dùng phương tiện Scanner để đọc
			Scanner input = new Scanner(is, "UTF-8");// đọc theo bảng mã utf-8
			// Đọc tệp tin
			// trong khi còn dòng để đọc
			while (input.hasNextLine()) {
				// Đọc 1 dòng
				String line = input.nextLine();
				content += "\n" + line;
			}
			// đóng luồng
			is.close();
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return content;
	}

	public String readFileByLimit(String filename, int countLine) {
		/*
		 * read countLine in text file doc 1 so dong nhat dinh trong file text
		 */
		String content = "";
		try {
			// tạo luồng nối đến tập tin
			FileInputStream is = new FileInputStream(filename);
			// Dùng phương tiện Scanner để đọc
			Scanner input = new Scanner(is, "UTF-8");// đọc theo bảng mã utf-8
			// Đọc tệp tin
			// trong khi còn dòng để đọc
			int line = 0;
			while (input.hasNextLine() && line < countLine) {
				// Đọc 1 dòng
				String lineContent = input.nextLine();
				content += lineContent + "--";
				line = line + 1;
			}
			// đóng luồng
			is.close();
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return content;
	}

	public ArrayList<String> readFileToArray(String filename, int countLine) {
		/*
		 * read countLine in text file doc 1 so dong nhat dinh trong file text
		 * countLine = -1 ;read all line in text file countLine = 0; read 0 line
		 * in text file countLine = 1-* ; read 1-* line in text file
		 */
		 ArrayList<String> content = new ArrayList<String>();
		try {
			// tạo luồng nối đến tập tin
			FileInputStream is = new FileInputStream(filename);
			// Dùng phương tiện Scanner để đọc
			Scanner input = new Scanner(is, "UTF-8");// đọc theo bảng mã utf-8
			if (countLine == -1) {
				
				while (input.hasNextLine()) {
					// Đọc 1 dòng
					String lineContent = input.nextLine();
					content.add(lineContent);
				
				}
			} else {
				int line = 0;
				while (input.hasNextLine() && line < countLine) {
					// Đọc 1 dòng
					String lineContent = input.nextLine();
					content.add(lineContent);
					line = line + 1;
				}
			}
			// đóng luồng
			is.close();
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return content;
	}

	public void Write2File(String fileName, String content, boolean isAppend)
			throws IOException {
		try {
			FileWriter writer = new FileWriter(fileName, isAppend);
			BufferedWriter buffer = new BufferedWriter(writer);
			buffer.write(content);
			buffer.flush();
			buffer.close();
		} catch (IOException ex) {
			System.out.println(ex.toString());
		}

	}

}
